[IA64] xensystem.h
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Wed, 19 Apr 2006 16:39:15 +0000 (10:39 -0600)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Wed, 19 Apr 2006 16:39:15 +0000 (10:39 -0600)
Move all Xen memory space constants into xensystem.h
Cleanup related to the move.

Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>
xen/include/asm-ia64/linux-xen/asm/io.h
xen/include/asm-ia64/linux-xen/asm/system.h
xen/include/asm-ia64/uaccess.h
xen/include/asm-ia64/vmx_uaccess.h
xen/include/asm-ia64/xensystem.h

index 45421f483b238dd5c157856b1001d8016d007b04..8eef746e93b4e0e3ae6af7fc0602d95199abfa01 100644 (file)
@@ -23,9 +23,7 @@
 #define __SLOW_DOWN_IO do { } while (0)
 #define SLOW_DOWN_IO   do { } while (0)
 
-#ifdef XEN
-#define __IA64_UNCACHED_OFFSET 0xe800000000000000UL
-#else
+#ifndef XEN
 #define __IA64_UNCACHED_OFFSET 0xc000000000000000UL    /* region 6 */
 #endif
 
index ae5a8ae3983ff68755bf72d3cfd517bc58419fa9..e80d13a05762f560e2004dd6c25ffbf40af735b3 100644 (file)
 #include <asm/percpu.h>
 
 #define GATE_ADDR              __IA64_UL_CONST(0xa000000000000000)
+#ifndef XEN
 /*
  * 0xa000000000000000+2*PERCPU_PAGE_SIZE
  * - 0xa000000000000000+3*PERCPU_PAGE_SIZE remain unmapped (guard page)
  */
 #define KERNEL_START            __IA64_UL_CONST(0xa000000100000000)
 #define PERCPU_ADDR            (-PERCPU_PAGE_SIZE)
+#endif
 
 #ifndef __ASSEMBLY__
 
@@ -185,6 +187,7 @@ do {                                                                \
        (__ia64_id_flags & IA64_PSR_I) == 0;    \
 })
 
+#ifndef XEN
 #ifdef __KERNEL__
 
 #ifdef CONFIG_IA32_SUPPORT
@@ -285,6 +288,7 @@ void cpu_idle_wait(void);
 #define arch_align_stack(x) (x)
 
 #endif /* __KERNEL__ */
+#endif /* XEN */
 
 #endif /* __ASSEMBLY__ */
 
index 7815cc22b6232e92687e75294103514e90291ea8..6cf5158954ecad092c33fe31892ffddb158b60b3 100644 (file)
@@ -42,7 +42,6 @@
 #include <asm/pgtable.h>
 #include <asm/io.h>
 
-#define IS_VMM_ADDRESS(addr) ((((addr) >> 60) ^ ((addr) >> 59)) & 1)
 #define __access_ok(addr) (!IS_VMM_ADDRESS((unsigned long)(addr)))
 #define access_ok(addr, size) (__access_ok(addr))
 #define array_access_ok(addr,count,size)( __access_ok(addr))
index eb9b03c34e60dcf8e3cc9ee4ea3f7278da993fe5..a6e27425f681b9e0034788a0e50653563ac4762b 100644 (file)
@@ -40,8 +40,6 @@
  */
 asm (".section \"__ex_table\", \"a\"\n\t.previous");
 
-/* VT-i reserves bit 60 for the VMM; guest addresses have bit 60 = bit 59 */
-#define IS_VMM_ADDRESS(addr) ((((addr) >> 60) ^ ((addr) >> 59)) & 1)
 /* For back compatibility */
 #define __access_ok(addr, size, segment)       1
 #define access_ok(addr, size, segment) __access_ok((addr), (size), (segment))
index b056115f997abd8ddce048681f4f0ac0beff533d..bf4811c0a68db4325896ceb338253747735f2db5 100644 (file)
 #include <asm/config.h>
 #include <linux/kernel.h>
 
-/* Define HV space hierarchy */
+/* Define HV space hierarchy.
+   VMM memory space is protected by CPL for paravirtualized domains and
+   by VA for VTi domains.  VTi imposes VA bit 60 != VA bit 59 for VMM.  */
 #define XEN_VIRT_SPACE_LOW      0xe800000000000000
 #define XEN_VIRT_SPACE_HIGH     0xf800000000000000     
 
+#define __IA64_UNCACHED_OFFSET  0xe800000000000000UL
+
 #define XEN_START_ADDR          0xf000000000000000
 #define HYPERVISOR_VIRT_START   0xf000000000000000
-#undef KERNEL_START
 #define KERNEL_START            0xf000000004000000
-#undef PERCPU_ADDR
 #define SHAREDINFO_ADDR                 0xf100000000000000
 #define SHARED_ARCHINFO_ADDR    (SHAREDINFO_ADDR + PAGE_SIZE)
 #define PERCPU_ADDR             (SHAREDINFO_ADDR - PERCPU_PAGE_SIZE)
 #endif
 #define XEN_END_ADDR            0xf400000000000000
 
+#define IS_VMM_ADDRESS(addr) ((((addr) >> 60) ^ ((addr) >> 59)) & 1)
+
 #ifndef __ASSEMBLY__
 
-#undef IA64_HAS_EXTRA_STATE
 #define IA64_HAS_EXTRA_STATE(t) 0
 
-#undef __switch_to
-extern struct task_struct *vmx_ia64_switch_to (void *next_task);
+struct vcpu;
+extern void ia64_save_extra (struct vcpu *v);
+extern void ia64_load_extra (struct vcpu *v);
+
+extern struct vcpu *vmx_ia64_switch_to (struct vcpu *next_task);
+extern struct vcpu *ia64_switch_to (struct vcpu *next_task);
+
 #define __switch_to(prev,next,last) do {       \
        ia64_save_fpu(prev->arch._thread.fph);  \
        ia64_load_fpu(next->arch._thread.fph);  \
@@ -62,7 +70,6 @@ extern struct task_struct *vmx_ia64_switch_to (void *next_task);
        }                                       \
 } while (0)
 
-#undef switch_to
 // FIXME SMP... see system.h, does this need to be different?
 #define switch_to(prev,next,last)      __switch_to(prev, next, last)